Computer systems increasingly acquire various kinds of functions, while the systems become more complex. Meanwhile, the multi-thread programming on software, such as POSIX software threads (See Non-Patent Literatures 1 and 2, for example), suffers from performance isolation between the software threads and causes difficulty in system designing. In recent years, such techniques as a multi-core processor, the hardware multithreading (See Non-Patent Literature 3, for example), and the virtual multiprocessor (See Patent Literature 1, for example) are advancing in order to facilitate independent performance designing for a variety of functions.
Furthermore, in order to make it easier to implement performance designing for each of the processor core, the threads, and the virtual processor, a proposal in for example Patent Literature 2 shows a mechanism for a cache memory affecting a processing performance. For each of the processors, the mechanism separates multiple ways of an on-chip cache memory shared by processors, and manages the separated multiple ways.
It is noted that granularity for switching software threads is typically set coarse, such as a long period between several hundreds of microseconds and several seconds. This is because the software processing for the switching causes overhead. In the multi-core processor and the hardware multithreading, multiple programs can be simultaneously run. A typical virtual multiprocessor switches its processors in granularity of several hundreds of microseconds.